import { chromium, firefox, webkit } from "playwright";

(async () => {
  const browser = await chromium.launch(); // Or 'firefox' or 'webkit'.
  const page = await browser.newPage();
  // 仅支持加载html文档，js脚本，样式文件, 和发起ajax请求(请不要将样式禁止，有些项目会因为禁止加载样式，导致js执行出错)
  const whitelist = ["document", "script", "xhr", "fetch", "stylesheet"];
  await page.route("**/*", (route) => {
    console.log("route.request().url()", route.request().url());
    if (!whitelist.includes(route.request().resourceType())) {
      // 非白名单类型的资源，则拒绝(请求将不会发出)
      return route.abort();
    }
    // 白名单类型的请求可以发出
    return route.continue();
  });
  await page.goto("http://localhost:18081/home", {
    timeout: 15000, //连接超时时间15秒，单位ms
    waitUntil: "load",
    //参数
    args: [
      "--disable-gpu", // GPU硬件加速
      "--disable-dev-shm-usage", // 创建临时文件共享内存
      "--disable-setuid-sandbox", // uid沙盒
      "--disable-accelerated-2d-canvas", // canvas渲染
      "--no-first-run", // 没有设置首页。在启动的时候，就会打开一个空白页面。
      "--no-sandbox", // 沙盒模式
      "--no-zygote",
      "--single-process", // 单进程运行
    ],
  });
  await page.screenshot({ path: "screenshot-666.png", fullPage: true });
  // 关闭连接
  await page.close();
  // 关闭浏览器
  await browser.close();
})();
